package com.jxd.ordering.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * @ClassName FileController
 * @Description TODO
 * @Author Ankailong
 * @Date 2022/9/27
 * @Version 1.0
 */
@RestController
public class FileController {
    private final static String FILESERVER="/static/upload/"; // 文件存储位置

    /**
     * 文件上传
     * level: 1
     * @param file 文件
     * @param request request对象
     * @return 上传结果信息
     * @throws IOException 输入输出异常
     */
    @RequestMapping("/upload")
    public Map<String,String> upload(MultipartFile file, HttpServletRequest request) throws IOException {
        Map<String,String> map=new HashMap<>();
        //指定文件存储目录为我们项目部署环境下的upload目录
        String realPath = "E:\\workspace\\ordering_system\\ordering_system_backend\\src\\main\\resources\\static\\upload";
        File dir = new File(realPath);
        //如果不存在则创建目录
        if(!dir.exists()){
            dir.mkdirs();
        }
        //获取文件名
        String originalFilename = file.getOriginalFilename();
        //避免文件名冲突,使用UUID替换文件名
        String uuid = UUID.randomUUID().toString();
        //获取拓展名
        String extendsName = originalFilename.substring(originalFilename.lastIndexOf("."));
        //新的文件名
        String newFileName=uuid.concat(extendsName);
        //文件存储位置
        File newFile =new File(dir,newFileName);
        //文件保存
        file.transferTo(newFile);

        map.put("message", "上传成功");
        map.put("newFileName", "http://localhost:8086" + FILESERVER+newFileName);
        map.put("filetype", file.getContentType());
        return map;
    }
}
